home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
4_0
/
HYPERXCM
/
XCMDGLUE.C
< prev
next >
Wrap
Text File
|
1991-10-19
|
8KB
|
309 lines
/*
XCmdGlue.c Functions for calling all standard HyperCard callback
routines from C. This file derived from Pascal interface.
Note that the arguments are slightly different than Pascal. The first
argument is always a pointer to the parameter block that HyperCard
passed to the XCMD or XFCN.
⌐Apple Computer, Inc. 1987
All Rights Reserved.
*/
/*
Includes
Note these header files are for THINK-C development.
*/
#include <pascal.h>
#include <MacTypes.h>
#include "HyperXCmd.h"
pascal void SendCardMessage (paramPtr, msg)
XCmdBlockPtr paramPtr;
StringPtr msg;
{
paramPtr->inArgs[0] = (long) msg;
paramPtr->request = xreqSendCardMessage;
DoJsr (paramPtr);
} /*- proc-end: SendCardMessage -*/
pascal Handle EvalExpr (paramPtr, expr)
XCmdBlockPtr paramPtr;
StringPtr expr;
{
paramPtr->inArgs[0] = (long) expr;
paramPtr->request = xreqEvalExpr;
DoJsr (paramPtr);
return (Handle) paramPtr->outArgs[0];
} /*- proc-end: EvalExpr -*/
pascal long StringLength (paramPtr, strPtr)
XCmdBlockPtr paramPtr;
StringPtr strPtr;
{
paramPtr->inArgs[0] = (long) strPtr;
paramPtr->request = xreqStringLength;
DoJsr (paramPtr);
return (long) paramPtr->outArgs[0];
} /*- proc-end: StringLength -*/
pascal Ptr StringMatch (paramPtr, pattern, target)
XCmdBlockPtr paramPtr;
StringPtr pattern;
Ptr target;
{
paramPtr->inArgs[0] = (long) pattern;
paramPtr->inArgs[1] = (long) target;
paramPtr->request = xreqStringMatch;
DoJsr (paramPtr);
return (Ptr) paramPtr->outArgs[0];
} /*- proc-end: StringMatch -*/
pascal void SendHCMessage (paramPtr, msg)
XCmdBlockPtr paramPtr;
StringPtr msg;
{
paramPtr->inArgs[0] = (long) msg;
paramPtr->request = xreqSendHCMessage;
DoJsr (paramPtr);
} /*- proc-end: SendHCMessage -*/
pascal void ZeroBytes (paramPtr, dstPtr, Count)
XCmdBlockPtr paramPtr;
Ptr dstPtr;
long Count;
{
paramPtr->inArgs[0] = (long) dstPtr;
paramPtr->inArgs[1] = (long) Count;
paramPtr->request = xreqZeroBytes;
DoJsr (paramPtr);
} /*- proc-end: ZeroBytes -*/
pascal Handle PasToZero (paramPtr, pasStr)
XCmdBlockPtr paramPtr;
StringPtr pasStr;
{
paramPtr->inArgs[0] = (long) pasStr;
paramPtr->request = xreqPasToZero;
DoJsr (paramPtr);
return (Handle) paramPtr->outArgs[0];
} /*- proc-end: PasToZero -*/
pascal void ZeroToPas (paramPtr, zeroPtr, pasStr)
XCmdBlockPtr paramPtr;
char *zeroPtr;
StringPtr pasStr;
{
paramPtr->inArgs[0] = (long) zeroPtr;
paramPtr->inArgs[1] = (long) pasStr;
paramPtr->request = xreqZeroToPas;
DoJsr (paramPtr);
} /*- proc-end: ZeroToPas -*/
pascal long StrToLong (paramPtr, strPtr)
XCmdBlockPtr paramPtr;
Str31 *strPtr;
{
paramPtr->inArgs[0] = (long) strPtr;
paramPtr->request = xreqStrToLong;
DoJsr (paramPtr);
return (long) paramPtr->outArgs[0];
} /*- proc-end: StrToLong -*/
pascal long StrToNum (paramPtr, strPtr)
XCmdBlockPtr paramPtr;
Str31 *strPtr;
{
paramPtr->inArgs[0] = (long) strPtr;
paramPtr->request = xreqStrToNum;
DoJsr (paramPtr);
return (long) paramPtr->outArgs[0];
} /*- proc-end: StrToNum -*/
pascal Boolean StrToBool (paramPtr, strPtr)
XCmdBlockPtr paramPtr;
Str31 *strPtr;
{
paramPtr->inArgs[0] = (long) strPtr;
paramPtr->request = xreqStrToBool;
DoJsr (paramPtr);
return (Boolean) paramPtr->outArgs[0];
} /*- proc-end: StrToBool -*/
pascal void StrToExt (paramPtr, strPtr, myext)
XCmdBlockPtr paramPtr;
Str31 *strPtr;
extended *myext;
{
paramPtr->inArgs[0] = (long) strPtr;
paramPtr->inArgs[1] = (long) myext;
paramPtr->request = xreqStrToExt;
DoJsr (paramPtr);
} /*- proc-end: StrToExt -*/
pascal void LongToStr (paramPtr, posNum, mystr)
XCmdBlockPtr paramPtr;
long posNum;
Str31 *mystr;
{
paramPtr->inArgs[0] = (long) posNum;
paramPtr->inArgs[1] = (long) mystr;
paramPtr->request = xreqLongToStr;
DoJsr (paramPtr);
} /*- proc-end: LongToStr -*/
pascal void NumToStr (paramPtr, num, mystr)
XCmdBlockPtr paramPtr;
long num;
Str31 *mystr;
{
paramPtr->inArgs[0] = (long) num;
paramPtr->inArgs[1] = (long) mystr;
paramPtr->request = xreqNumToStr;
DoJsr (paramPtr);
} /*- proc-end: NumToStr -*/
pascal void NumToHex (paramPtr, num, nDigits, mystr)
XCmdBlockPtr paramPtr;
long num;
short int nDigits;
Str31 *mystr;
{
paramPtr->inArgs[0] = (long) num;
paramPtr->inArgs[1] = (long) nDigits;
paramPtr->inArgs[2] = (long) mystr;
paramPtr->request = xreqNumToHex;
DoJsr (paramPtr);
} /*- proc-end: NumToHex -*/
pascal void BoolToStr (paramPtr, bool, mystr)
XCmdBlockPtr paramPtr;
Boolean bool;
Str31 *mystr;
{
paramPtr->inArgs[0] = (long) bool;
paramPtr->inArgs[1] = (long) mystr;
paramPtr->request = xreqBoolToStr;
DoJsr (paramPtr);
} /*- proc-end: BoolToStr -*/
pascal void ExtToStr (paramPtr, myext, mystr)
XCmdBlockPtr paramPtr;
extended *myext;
Str31 *mystr;
{
paramPtr->inArgs[0] = (long) myext;
paramPtr->inArgs[1] = (long) mystr;
paramPtr->request = xreqExtToStr;
DoJsr (paramPtr);
} /*- proc-end: ExtToStr -*/
pascal Handle GetGlobal (paramPtr, globName)
XCmdBlockPtr paramPtr;
StringPtr globName;
{
paramPtr->inArgs[0] = (long) globName;
paramPtr->request = xreqGetGlobal;
DoJsr (paramPtr);
return (Handle) paramPtr->outArgs[0];
} /*- proc-end: GetGlobal -*/
pascal void SetGlobal (paramPtr, globName, globValue)
XCmdBlockPtr paramPtr;
StringPtr globName;
Handle globValue;
{
paramPtr->inArgs[0] = (long) globName;
paramPtr->inArgs[1] = (long) globValue;
paramPtr->request = xreqSetGlobal;
DoJsr (paramPtr);
} /*- proc-end: SetGlobal -*/
pascal void SetFieldByName (paramPtr, cardFieldFlag, fieldName, fieldVal)
XCmdBlockPtr paramPtr;
Boolean cardFieldFlag;
StringPtr fieldName;
Handle fieldVal;
{
paramPtr->inArgs[0] = (long) cardFieldFlag;
paramPtr->inArgs[1] = (long) fieldName;
paramPtr->inArgs[2] = (long) fieldVal;
paramPtr->request = xreqSetFieldByName;
DoJsr (paramPtr);
} /*- proc-end: SetFieldByName -*/
pascal void SetFieldByNum (paramPtr, cardFieldFlag, fieldNum, fieldVal)
XCmdBlockPtr paramPtr;
Boolean cardFieldFlag;
short int fieldNum;
Handle fieldVal;
{
paramPtr->inArgs[0] = (long) cardFieldFlag;
paramPtr->inArgs[1] = (long) fieldNum;
paramPtr->inArgs[2] = (long) fieldVal;
paramPtr->request = xreqSetFieldByNum;
DoJsr (paramPtr);
} /*- proc-end: SetFieldByNum -*/
pascal void SetFieldByID (paramPtr, cardFieldFlag, fieldID, fieldVal)
XCmdBlockPtr paramPtr;
Boolean cardFieldFlag;
short int fieldID;
Handle fieldVal;
{
paramPtr->inArgs[0] = (long) cardFieldFlag;
paramPtr->inArgs[1] = (long) fieldID;
paramPtr->inArgs[2] = (long) fieldVal;
paramPtr->request = xreqSetFieldByID;
DoJsr (paramPtr);
} /*- proc-end: SetFieldByID -*/
pascal Boolean StringEqual (paramPtr, str1, str2)
XCmdBlockPtr paramPtr;
Str31 *str1, *str2;
{
paramPtr->inArgs[0] = (long) str1;
paramPtr->inArgs[1] = (long) str2;
paramPtr->request = xreqStringEqual;
DoJsr (paramPtr);
return (Boolean) paramPtr->outArgs[0];
} /*- proc-end: StringEqual -*/
pascal void ReturnToPas (paramPtr, zeroStr, pasStr)
XCmdBlockPtr paramPtr;
Ptr zeroStr;
StringPtr pasStr;
{
paramPtr->inArgs[0] = (long) zeroStr;
paramPtr->inArgs[1] = (long) pasStr;
paramPtr->request = xreqReturnToPas;
DoJsr (paramPtr);
} /*- proc-end: ReturnToPas -*/
pascal void ScanToReturn (paramPtr, scanHndl)
XCmdBlockPtr paramPtr;
Ptr *scanHndl;
{
paramPtr->inArgs[0] = (long) scanHndl;
paramPtr->request = xreqScanToReturn;
DoJsr (paramPtr);
} /*- proc-end: ScanToReturn -*/
pascal void ScanToZero (paramPtr, scanHndl)
XCmdBlockPtr paramPtr;
Ptr *scanHndl;
{
paramPtr->inArgs[0] = (long) scanHndl;
paramPtr->request = xreqScanToZero;
DoJsr (paramPtr);
} /*- proc-end: ScanToZero -*/
pascal void DoJsr (paramPtr)
XCmdBlockPtr paramPtr;
{ /*- This is THINK-C implementation -*/
CallPascal (paramPtr->entryPoint);
} /*- proc-end: DoJsr -*/